package com.iman.Confucius.service.student;

import java.util.List;
import java.util.Map;

import com.iman.Confucius.vo.QuestionVo;
import com.iman.common.support.Page;

public interface QuestionService {
	
	/**
	 * 
	 *  Function: getQuestionList
	 *  功能说明：根据用户， 是否已回复过查询指定的问题列表
	 *	 使用说明
	 *  @author  Lihuai  DateTime Dec 21, 2014-4:14:13 PM
	 *	返回类型: Page<QuestionVo>    
	 *  @param answered -－ ture返回已回复过的问题列表， false 返回未被回复过的问题 
	 *  @return Page<QuestionVo>
	 */
	Page<QuestionVo> getQuestionList(Map<String, Integer> pageParam, Long userId, boolean answered, Long courseId, Long teacherId,
			Long classId);
	
	/**
	 * 
	 *  Function: getALLQuestionList
	 *  功能说明： 返回所有问题列表
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 21, 2014-4:17:50 PM
	 *	返回类型: Page<QuestionVo>    
	 *  @param courseId 若course_id为空则返回系统中所有问题列表, 否则返回用户所在班级问题列表
	 *  @return Page<QuestionVo>
	 */
	Page<QuestionVo> getALLQuestionList(Map<String, Integer> pageParam, Long courseId,Long teacherId);
	
	/**
	 * 
	 *  Function: getHotQuestionList
	 *  功能说明：返回热点问题列表 (查询所有问题,并按照回复数倒序, 只显示固定数量问题)
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 21, 2014-4:19:10 PM
	 *	返回类型: Page<QuestionVo>    
	 *  @param questionCount 返回指定个数问题列表
	 *  @return Page<QuestionVo>
	 */
	Page<QuestionVo> getHotQuestionList(int questionCount, Long courseId,Long teacherId);
	
	/**
	 * 
	 *  Function: postQuestion
	 *  功能说明：保存问题
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 21, 2014-11:59:38 AM
	 *	返回类型: long     
	 *  @param 
	 *  @return void
	 */
	Long postQuestion(Long courseId, String title, String content, long userId);
	
	/**
	 * 
	 *  Function: getQuestionDetail
	 *  功能说明：返回问题详细信息
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 26, 2014-2:23:03 PM
	 *	返回类型: QuestionVo 
	 *  @param 
	 *  @return QuestionVo
	 */
	QuestionVo getQuestionDetail(Long questionId);

	/**
	 * 
	 *  Function: updateQuestionViewcnt
	 *  功能说明：更新question对象被浏览数
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 26, 2014-3:33:55 PM
	 *	返回类型: void    
	 *  @param 
	 *  @return void
	 */
	void updateQuestionViewcnt(Long questionId);

	/**
	 * 
	 *  Function: replayQuestion
	 *  功能说明：回复问题
	 *	 使用说明：
	 *  @author  Lihuai  DateTime Dec 26, 2014-3:37:59 PM
	 *	返回类型: void    
	 *  @param 
	 *  @return void
	 */
	void replayQuestion(Long questionId, Long userId, String content, int answerTp);
}
